//----------------------------------------------------------------------------------
// CCore class
// Author: Oscar Serrano
//
// Description:
// Core del motor(Singleton), contiene un puntero a cada manager con tal de gestionarlos (Init, Update, Render, DeInit)
//----------------------------------------------------------------------------------

#pragma once

#ifndef CORE_H
#define CORE_H

#include "Utils\Base.h"
#include "Engine\Engine_Defs.h"
#include "Utils\Singleton.h"
#include "Font\FontManager.h"


class CRenderManager;
class CFontManager;
class CLanguageManager;
class CInputManager;

class CCore: public CSingleton<CCore>
{
public:
	CCore									();
	~CCore									();
	void				Init				(HWND hWnd, const SEngineInitParams& params);
	void				DeInit				();
	void				Update				(float dt);
	void				Render				();
	CRenderManager*	GetRenderManager	() {return m_pRenderManager;}
	CFontManager	*	GetFontManager		() {return m_pFontManager;}
	CLanguageManager*	GetLanguageManager	() {return m_pLanguageManager;}
	CInputManager	*	GetInputManager		() {return m_pInputManager;}

private:
	CRenderManager*	m_pRenderManager;
	CFontManager	*	m_pFontManager;
	CLanguageManager*	m_pLanguageManager;
	CInputManager	*	m_pInputManager;


};

#endif

